# -*- coding: utf-8 -*-

"""
    源用到的基础公式
"""

import numpy as np


def cal_relative_velocity_between_phases(V_g_segment: np.ndarray, V_L_segment: np.ndarray) -> np.ndarray:
    """ 计算管道中气液两相的相对速度 V_r

    Args:
        V_g_segment : np.ndarray 气相速度
        V_L_segment : np.ndarray 液相速度

    Returns:
        np.ndarray 气液两相的相对速度
    """
    V_r_segment = V_g_segment - V_L_segment
    return V_r_segment


def cal_superficial_gas_velocity(V_g_segment: np.ndarray, alpha_g_segment: np.ndarray) -> np.ndarray:
    """ 计算气相表观速度

    Args:
        V_g_segment : np.ndarray 气相速度
        alpha_g_segment : np.ndarray 气相体积分数

    Returns:
        np.ndarray: 气相表观速度
    """
    V_sg_segment = V_g_segment * alpha_g_segment
    return V_sg_segment


def cal_superficial_liquid_velocity(V_L_segment: np.ndarray, alpha_L_segment: np.ndarray) -> np.ndarray:
    """ 计算表观液相速度

    Args:
        V_L_segment : np.ndarray 液相速度
        alpha_L_segment : np.ndarray 液相体积分数

    Returns:
        np.ndarray: 表观液相速度
    """
    V_sL_segment = V_L_segment * alpha_L_segment
    return V_sL_segment


def cal_Reynolds_number(
    rho_segment: np.ndarray, feature_length_segment: np.ndarray, V_segment: np.ndarray, mu_segment: np.ndarray
) -> np.ndarray:
    """ 计算雷诺数, 气液相同时适用

    Args:
        rho_segment : np.ndarray 密度
        feature_length_segment : np.ndarray 特征长度
        V_segment : np.ndarray 速度
        mu_segment : np.ndarray 粘性系数

    Returns:
        np.ndarray: 雷诺数
    """
    Re_segment = rho_segment * feature_length_segment * np.abs(V_segment) / mu_segment
    return Re_segment

def cal_mixture_velocity(
    V_g_segment: np.ndarray, 
    alpha_g_segment: np.ndarray, 
    V_L_segment: np.ndarray, 
    alpha_L_segment: np.ndarray,
    rho_g_segment:np.ndarray,
    rho_L_segment:np.ndarray,
    V_D_segment: np.ndarray,
    alpha_D_segment:np.ndarray,
) -> np.ndarray:
    """ 计算混合物速度

    Args:
        V_g_segment : np.ndarray 气相速度
        alpha_g_segment : np.ndarray 管道中连续的气体的截面分数
        V_L_segment : np.ndarray 液相速度
        alpha_L_segment : np.ndarray 管道中连续的液体的截面分数
        V_D_segment : np.ndarray 管道的液滴速度
        alpha_D_segment : np.ndarray 液滴横截面分数
        rho_g: np.ndarray 气体密度
        rho_L: np.ndarray 液体密度

    Returns:
        np.ndarray 混合物速度
    """
    V_m_segment = (V_g_segment * alpha_g_segment * rho_g_segment + V_L_segment * alpha_L_segment* rho_L_segment + V_D_segment * alpha_D_segment * rho_L_segment) / (alpha_g_segment * rho_g_segment + alpha_L_segment* rho_L_segment + alpha_D_segment * rho_L_segment)
    
    return V_m_segment











